home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / PB_212.ZIP / PB_STRUC.212 < prev    next >
Text File  |  1995-09-09  |  34KB  |  685 lines

  1. /*
  2.                      ┌────────────────────────────────┐
  3.                      │ ProBoard v2.12 File Structures │
  4.                      └────────────────────────────────┘
  5.  
  6.  
  7. This document describes the file structures used by ProBoard version 2.12.
  8. For information on the structures of the RemoteAccess compatible files, refer
  9. to the RemoteAccess structures document. It can be obtained from any of the
  10. ProBoard distribution sites.
  11.  
  12. -------------------------------------------------------------------------------
  13.  
  14. The data-structures are C-structures, this means:
  15.  
  16. - Strings are stored as an array of characters, terminated by a 0.
  17. - A date is stored as 3 bytes (day,month,year)
  18. - A time is stored as 3 bytes (hour,min,sec)
  19.  
  20. The 'accessflags' are stored in a long integer, with bit 31 being flag 'A',
  21. bit 30 flag 'B' , ... Bit 5 is flag '1', bit 4 is flag '2', etc...
  22. I know this doesn't sound logical, but we had some good reasons for doing
  23. this :-).
  24.  
  25. The combined boards are stored in 125 bytes (1000 bits). One bit per message
  26. area.
  27. */
  28.  
  29. typedef unsigned short word;
  30. typedef unsigned long  dword;
  31. typedef unsigned char  byte;
  32. typedef unsigned long  accessflags;
  33. typedef unsigned char  combinedboards[125];
  34. typedef unsigned char  bool;
  35. typedef unsigned char  Time[3];
  36. typedef unsigned char  Date[3];
  37. typedef unsigned char  TimeFrame[7][6];
  38.  
  39. typedef struct
  40.   {
  41.     byte periods[7][6];   /* 7x48 periods of 1/2 hour = one week */
  42.   }
  43.   TimeFrame;
  44.  
  45.  
  46. typedef struct
  47.   {
  48.     word         minLevel;              /* 0 =           don't care     */
  49.     word         maxLevel;              /* 0 =           don't care     */
  50.     accessflags  flags;                 /* All off =     don't care     */
  51.     accessflags  flagsNot;              /* All off =     don't care     */
  52.     byte         minAge;                /* 0 =           don't care     */
  53.     byte         maxAge;                /* 0 =           don't care     */
  54.     byte         sex;                   /* 0 =           don't care     */
  55.     word         minTimeLeft;           /* 0 =           don't care     */
  56.     word         minTimeOnline;         /* 0 =           don't care     */
  57.     TimeFrame    timeFrame;             /* All on =      don't care     */
  58.     byte         terminals;             /* 0xFF =        don't care     */
  59.     dword        minSpeed;              /* 0 =           don't care     */
  60.     dword        maxSpeed;              /* 0 =           don't care     */
  61.  
  62.     byte         extra[50];             /* Extra space                  */
  63.   }
  64.   AccessRecord;
  65.  
  66. /*
  67. ────────────────────────────────────────────────────────────────────────────
  68.  USERSPB.BBS
  69. ────────────────────────────────────────────────────────────────────────────
  70.  
  71. This file is tied to the files USERS.BBS and USERSXI.BBS. The records are
  72. stored in the same order as the records in USERS.BBS. The name of the user
  73. is duplicated in this file, so it is possible to fix the userfile after using
  74. a third-party userfile packer/sorter, which does not know about USERSPB.BBS.
  75.  
  76. */
  77.  
  78. struct UsersPbBBS
  79.    {
  80.       char           name[36];
  81.       char           country[26];
  82.       char           state[26];
  83.       char           faxPhone[16];
  84.       char           passWord[16];
  85.       char           language[9];
  86.       Date           lastPwdChange;
  87.       Date           lastNewFilesCheck;
  88.       short          logLevel;
  89.       short          tbTimeBalance;
  90.       short          tbKbBalance;
  91.       short          tbTimeWithdrawn;
  92.       short          tbKbWithdrawn;
  93.       word           tbTimeDeposited;
  94.       word           tbKbDeposited;
  95.       word           tbTimeLoaned;
  96.       word           tbKbLoaned;
  97.       Date           tbTimePayback;
  98.       Date           tbKbPayback;
  99.       Date           tbLastUsed;
  100.       word           expLevel;
  101.       accessflags    expFlagsOn;
  102.       accessflags    expFlagsOff;
  103.       dword          uFlags;
  104.       combinedboards mailCheckBoards;
  105.       dword          totalTimeUsed;
  106.       word           qwkMaxMsgsPerArea;
  107.       word           qwkMaxMsgs;
  108.       byte           qwkArchiver;
  109.       byte           ripFont;
  110.       byte           checkMail;
  111.       byte           checkNewFiles;
  112.  
  113.       byte           extra[398];
  114.   };
  115.  
  116. /* These are the extra user-flags for 'uFlags': */
  117.  
  118. #define RA_UFLAG_NOIBM        1
  119. #define RA_UFLAG_NOTOPS       2
  120. #define RA_UFLAG_AVTPLUS      4
  121. #define RA_UFLAG_ATTEN        8
  122. #define RA_UFLAG_NORIP       16
  123. #define RA_UFLAG_MULTILOGIN  32
  124. #define RA_UFLAG_FREECHAT    64
  125. #define RA_UFLAG_LOCALONLY  128
  126.  
  127. /*
  128. ────────────────────────────────────────────────────────────────────────────
  129.  CONFIG.PRO
  130. ────────────────────────────────────────────────────────────────────────────
  131. */
  132.  
  133. struct CONFIG_PRO
  134.    {
  135.       char        shellmsg[81];         /* Message to show when shelling                */
  136.       char        sysopname[36];        /* Name of sysop                                */
  137.       char        txtpath[61];          /* Path for textfiles                           */
  138.       char        mnupath[61];          /* Path for menu-files                          */
  139.       char        msgpath[61];          /* Path for message base                        */
  140.       char        uploadpath[61];       /* Uploadpath                                   */
  141.       char        editorname[61];       /* Name of external editor                      */
  142.       word        newuserlevel;         /* Level for new user                           */
  143.       short       newuserloglevel;      /* Loglevel for new user                        */
  144.       accessflags newuserflags;         /* New user flags                               */
  145.       short       max_passinput;        /* Maximum attempts for password entry          */
  146.       short       min_passlength;       /* Minimum password length                      */
  147.       short       inactivity_time;      /* Inactivity time-out limit                    */
  148.       short       max_sysop_pages;      /* Maximum times sysop can be paged             */
  149.       short       pagebell_length;      /* Length of page-bell (secs)                   */
  150.       short       mailcheck;            /* Check for mail at logon?                     */
  151.       short       europe;               /* European date format?                        */
  152.       short       numnodes;             /* # nodes                                      */
  153.       bool        allowansi;            /* Allow ANSI?                                  */
  154.       bool        allowavatar;          /* Allow AVATAR?                                */
  155.       short       discrete;             /* Hide sysop activity?                         */
  156.       short       askphone;             /* Ask for phone number?                        */
  157.       short       allowoneword;         /* Allow one-word names                         */
  158.       unsigned    crashlevel;           /* Level needed for crashmail                   */
  159.       accessflags crashflags;           /* Flags needed for crashmail                   */
  160.       word        attachlevel;          /* Level needed for file attach                 */
  161.       accessflags attachflags;          /* Flags needed for file attach                 */
  162.       short       allowmsgupload;       /* Allow message uploads                        */
  163.       short       allowstacking;        /* Allow command stacking                       */
  164.       Time        page_start;           /* Paging hours start                           */
  165.       Time        page_end;             /* Paging hours end                             */
  166.       short       handshaking;          /* I/O Handshaking                              */
  167.       short       allowalias;           /* Allow alias for login                        */
  168.       short       loglocal;             /* Log local calls                              */
  169.       short       doswap;               /* Allow swapping                               */
  170.       char        originline[61];       /* Origin line                                  */
  171.       char        nodelistdir[61];      /* Nodelist directory                           */
  172.       char        sysopkeys[10][60];    /* Sysop hotkeys                                */
  173.       Time        dl_start;             /* Download hours start                         */
  174.       Time        dl_end;               /* Download hours end                           */
  175.       short       uploadspace;          /* Space needed for uploads                     */
  176.       char        pvtuploadpath[61];    /* Directory for files uploads                  */
  177.       char        quotestring[6];       /* String used for quoting                      */
  178.       bool        fastmode;             /* Use fast mode                                */
  179.       bool        extra_bool_1;
  180.       bool        killsent;             /* Kill netmail after sent                      */
  181.       bool        multiline;            /* Use message base sharing?                    */
  182.       bool        egamode;              /* Use 43/50 line mode                          */
  183.       bool        showuserinfo;         /* Show user info while in EGA mode?            */
  184.       char        pexpath[61];          /* Directory for PEX files                      */
  185.       bool        allowquicklogin;      /* Allow quick sysop login?                     */
  186.       bool        suspendmsgtime;       /* Suspend time when writing msgs               */
  187.       short       securityboard;        /* MsgBoard for security messages               */
  188.       bool        pwdmessages;          /* Write security-messages?                     */
  189.       bool        extra_bool_2;
  190.       char        bbsname[36];          /* Name of the BBS                              */
  191.       char        pwdchar;              /* Password character                           */
  192.       short       tb_maxtimedeposit;    /* Max time deposit per day (TimeBank)          */
  193.       short       tb_maxkbdeposit;      /* Max Kbytes deposit per day (TimeBank)        */
  194.       short       tb_maxtimewithdrawal; /* Max time withdrawal per day (TimeBank)       */
  195.       short       tb_maxkbwithdrawal;   /* Max Kbytes withdrawal per day (TimeBank)     */
  196.       short       usage_days;           /* Days to keep usage graphs                    */
  197.       char        systempwd[16];        /* System password                              */
  198.       bool        usesystempwd;         /* Use system password?                         */
  199.       bool        askbirthdate;         /* Ask Birth Date?                              */
  200.       short       binlogdays;           /* # days to log in BINLOG.PB                   */
  201.       bool        binloglocal;          /* Log local calls to BINLOG.PB yes/no          */
  202.       short       pageArea;             /* Area number for page messages                */
  203.       bool        indexfiles;           /* Use file indexing                            */
  204.       bool        checkdupes;           /* Check for dupes                              */
  205.       bool        killdupes;            /* Kill duplocate files                         */
  206.       bool        ignore_ext;           /* Ignore file extensions for dupe checking     */
  207.       char        RIPpath[61];          /* Path for RIP scripts                         */
  208.       char        iconspath[61];        /* Path for RIP icons                           */
  209.       char        location[36];         /* BBS Location (city)                          */
  210.       char        phone[26];            /* BBS Phone #                                  */
  211.       char        QWKid[9];             /* BBS QWK id                                   */
  212.       word        IObuffersize;         /* I/O buffer size in bytes                     */
  213.       TimeFrame   pagingHours;          /* Paging hours                                 */
  214.       char        defaultLanguage[9];   /* Default language                             */
  215.       bool        addUploaderName;      /* Add uploader's name to FILES.BBS             */
  216.       TimeFrame   downloadHours;        /* Download hours                               */
  217.       bool        askdataphone;         /* Ask data phone #                             */
  218.       bool        askfaxphone;          /* Ask fax phone #                              */
  219.       bool        askaddress;           /* Ask mailing address                          */
  220.       bool        asksex;               /* Ask sex                                      */
  221.       bool        askdateformat;        /* Ask date format                              */
  222.       bool        askstate;             /* Ask state                                    */
  223.       bool        askcountry;           /* Ask country                                  */
  224.       short       fuzzyRate;            /* Fuzzy search percentage for user editor      */
  225.       bool        hidePassword;         /* Hide password in user editor                 */
  226.       bool        valConfirm;           /* Confirm user validation                      */
  227.       char        extra_char_1[17];
  228.       char        extChat[81];          /* External chat program                        */
  229.       char        virScanCommand[61];   /* External upload scan command                 */
  230.       byte        virScanType;          /* External upload scan command (type)          */
  231.       char        virScanSemaphore[13]; /* External upload scan command (semaphore)     */
  232.       byte        listColorTag;         /* File list color (tag char)                   */
  233.       byte        listColorFileName;    /* File list color (file name)                  */
  234.       byte        listColorSize;        /* File list color (file size)                  */
  235.       byte        listColorDate;        /* File list color (file date)                  */
  236.       byte        listColorCounter;     /* File list color (file counter)               */
  237.       byte        listColorDesc;        /* File list color (description)                */
  238.       byte        listColorSeperator;   /* File list color (description seperator)      */
  239.       byte        listColorMissing;     /* File list color (missing indicator)          */
  240.       bool        hideFileCounter;      /* File list setup - hide file counter          */
  241.       bool        disableRIP;           /* TRUE = disable RIP completely                */
  242.       char        extra_char_2[81];
  243.       byte        virScanFailedAction;  /* External upload scan command (action)        */
  244.       word        virScanFailedArea;    /* External upload scan command (failed area)   */
  245.  
  246.       char        extra[5];
  247.    };
  248.  
  249.  
  250. /*
  251. ────────────────────────────────────────────────────────────────────────────
  252.  TIMELOG.PRO
  253. ────────────────────────────────────────────────────────────────────────────
  254. */
  255.  
  256. struct TIMELOG_PRO
  257.    {
  258.       short       numdays;              /* Number of days active                        */
  259.       Date        lastdate;             /* Last update                                  */
  260.       long        hours[24];            /* # minutes per hour usage (obsolete)          */
  261.       long        days[7];              /* # minutes per day usage  (obsolete)          */
  262.       long        weeks[53];            /* # minutes per week usage (obsolete)          */
  263.       long        totalcalls;           /* Total calls to system                        */
  264.   };
  265.  
  266.  
  267. /*
  268. ────────────────────────────────────────────────────────────────────────────
  269.  FILECFG.PRO
  270. ────────────────────────────────────────────────────────────────────────────
  271. */
  272.  
  273. struct FILECFG_PRO
  274.    {
  275.       char        name[80];             /* Name of file area                            */
  276.       char        listpath[80];         /* Path for file-list                           */
  277.       char        filepath[80];         /* Path for files                               */
  278.       word        level;                /* Level needed for access                      */
  279.       long        flags;                /* Flags needed for access                      */
  280.       char        type;                 /* 1 = CDROM File listing type                  */
  281.       short       maxfiles;             /* Max files per day in this area downloadable  */
  282.       short       maxkb;                /* Max Kbytes per day in this area              */
  283.       bool        notops;               /* Set to 1 -> should not be listed in TOPFILES */
  284.       bool        free;                 /* Set to 1 -> free area                        */
  285.       byte        groups[4];            /* Groups belonging to                          */
  286.       bool        allGroups;            /* Belongs to all groups                        */
  287.       byte        minAge;               /* Minimum age                                  */
  288.       long        flagsNot;             /* Access flags not allowed                     */
  289.       byte        dateFormat;           /* Date format (same as in user file)           */
  290.  
  291.       byte        extra[2];
  292.   };
  293.  
  294.  
  295. /*
  296. ────────────────────────────────────────────────────────────────────────────
  297.  MESSAGES.PB
  298. ────────────────────────────────────────────────────────────────────────────
  299. */
  300.  
  301. struct MESSAGES_PB
  302.    {
  303.       word        areaNum;              /* # of message area (1-10000)                  */
  304.       word        hudsonBase;           /* Number of Hudson message base                */
  305.       char        name[81];             /* Name of message area                         */
  306.       byte        msgType;              /* Kind of message area (Net/Echo/Local)        */
  307.       byte        msgKind;              /* Type of message (Private only/Public only/.) */
  308.       byte        msgBaseType;          /* Type of message base                         */
  309.       char        path[81];             /* Path to Squish or *.MSG                      */
  310.       byte        flags;                /* Alias allowed/forced/prohibited              */
  311.       word        readLevel;            /* Minimum level needed to read msgs            */
  312.       accessflags readFlags;            /* flags needed to read msgs                    */
  313.       accessflags readFlagsNot;         /* flags non-grata to read msgs                 */
  314.       word        writeLevel;           /* Minimum level needed to write msgs           */
  315.       accessflags writeFlags;           /* flags needed to write msgs                   */
  316.       accessflags writeFlagsNot;        /* flags non-grata to read msgs                 */
  317.       word        sysopLevel;           /* Minimum level needed to change msgs          */
  318.       accessflags sysopFlags;           /* flags needed to change msgs                  */
  319.       accessflags sysopFlagsNot;        /* flags non-grata to read msgs                 */
  320.  
  321.       char        origin[62];           /* Origin line                                  */
  322.       short       aka;                  /* AKA                                          */
  323.  
  324.       word        rcvKillDays;          /* Kill received after xx days                  */
  325.       word        msgKillDays;          /* Kill after xx days                           */
  326.       word        maxMsgs;              /* Max # msgs                                   */
  327.  
  328.       char        sysop[36];            /* Area Sysop                                   */
  329.       short       replyBoard;           /* Area number where replies should go          */
  330.  
  331.       char        echoTag[61];          /* Echomail Tag Name                            */
  332.       char        qwkTag[13];           /* QWK Area Name                                */
  333.  
  334.       byte        groups[4];            /* Groups belonging to                          */
  335.       bool        allGroups;            /* Belongs to all groups                        */
  336.       byte        minAge;               /* Minimum age for this area                    */
  337.  
  338.       byte        extra[112];
  339.   };
  340.  
  341.  
  342. #define MSGTYPE_BOTH     0 /* Private/Public */
  343. #define MSGTYPE_PVT      1 /* Private Only   */
  344. #define MSGTYPE_PUBLIC   2 /* Public Only    */
  345. #define MSGTYPE_TOALL    3 /* To All         */
  346.  
  347. #define MSGKIND_LOCAL    0 /* Local          */
  348. #define MSGKIND_NET      1 /* NetMail        */
  349. #define MSGKIND_ECHO     2 /* EchoMail       */
  350. #define MSGKIND_PVTECHO  3 /* Pvt EchoMail   */
  351.  
  352. #define MSGBASE_HUDSON   0
  353. #define MSGBASE_SQUISH   1
  354. #define MSGBASE_SDM      2
  355. #define MSGBASE_JAM      3
  356.  
  357. /*
  358. ────────────────────────────────────────────────────────────────────────────
  359.  ONLINE.PRO
  360. ────────────────────────────────────────────────────────────────────────────
  361. */
  362.  
  363. struct ONLINE_PRO
  364.    {
  365.       char        name[36];             /* Name of user online                          */
  366.       char        city[16];             /* City of user online                          */
  367.       word        baud;                 /* Baud rate of user                            */
  368.       short       status;               /* 0 -> online , <0 -> not online or unavailable*/
  369.  
  370.       char        extra[8];
  371.    };
  372.  
  373.  
  374.  
  375. /*
  376. ────────────────────────────────────────────────────────────────────────────
  377.  TOPS.PB
  378. ────────────────────────────────────────────────────────────────────────────
  379. */
  380.  
  381. struct TOPS_PB
  382.    {
  383.       char        name[36];             /* Name of user online                                 */
  384.       dword       n;                    /* Data (# kb/minutes/files/etc...)                    */
  385.    };
  386.  
  387.  
  388.  
  389. /*
  390. ────────────────────────────────────────────────────────────────────────────
  391.  PROTOCOL.PRO
  392. ────────────────────────────────────────────────────────────────────────────
  393. */
  394.  
  395. struct PROTOCOL_PRO
  396.    {
  397.       char        name[50];             /* Name of protocol                             */
  398.       char        key;                  /* Hotkey for Protocol                          */
  399.       char        flags;                /* Protocol behavior                            */
  400.       char        logfile[60];          /* Logfile from protocol                        */
  401.       char        ctlfile[60];          /* Control file (redirection file)              */
  402.       char        dlcom[128];           /* Download command line                        */
  403.       char        ulcom[128];           /* Upload command line                          */
  404.       char        dlstring[80];         /* String to place in download control file     */
  405.       char        ulstring[80];         /* String to place in upload control file       */
  406.       char        dlkeyword[40];        /* Download keyword to search for in logfile    */
  407.       char        ulkeyword[40];        /* Upload keyword to search for in logfile      */
  408.       short       wordnr;               /* File name word nr after keyword (1-..)       */
  409.   };
  410.  
  411.  
  412. /* Flags: */
  413.  
  414. #define PROT_BATCH   1    /* Batch protocol        */
  415. #define PROT_ENABLED 2    /* Enabled               */
  416. #define PROT_BOTH    4    /* Full-duplex protocol  */
  417. #define PROT_BIM     8    /* Bimodem-type ctl-file */
  418. #define PROT_LOCAL  16    /* Local only            */
  419.  
  420.  
  421. /*
  422. ────────────────────────────────────────────────────────────────────────────
  423.  LIMITS.PRO
  424. ────────────────────────────────────────────────────────────────────────────
  425. */
  426.  
  427. struct LIMITS_PRO
  428.    {
  429.       word        level;                /* Level                                        */
  430.       short       timelimit;            /* # minutes per day                            */
  431.       short       daily_klimit;         /* Kbytes per day allowed                       */
  432.       short       pre_download;         /* # minutes online before download             */
  433.       char        id[6];                /* Usergroup ID                                 */
  434.       word        free;                 /* Free upload in Kb.                           */
  435.       byte        factor;               /* Percentage upload required                   */
  436.       word        max_download;         /* Max download for this level                  */
  437.       short       fallto;               /* Fall to level x when max. reached            */
  438.       short       msgfactor;            /* # Kbytes granted per message written         */
  439.  
  440.       char        extra[5];
  441.    };
  442.  
  443.  
  444. /*
  445. ────────────────────────────────────────────────────────────────────────────
  446.  MODEM.PB
  447. ────────────────────────────────────────────────────────────────────────────
  448. */
  449.  
  450. struct MODEM_PB
  451.    {
  452.       long        maxBps;               /* Maximum Baud Rate                         */
  453.       long        lockedBps;            /* Locked Baud Rate  (not used)              */
  454.       dword       flags;                /* Attributes (see below)                    */
  455.       short       port;                 /* COM port (1-8)                            */
  456.       short       commandDelay;         /* Delay in 1/10s between characters sent    */
  457.       short       answerDelay;          /* Delay in 1/10s before answer string sent  */
  458.       short       blankTime;            /* Time in seconds for screen blanker        */
  459.       char        msgCon300     [80];   /* Connect 300 string                        */
  460.       char        msgCon1200    [80];   /* Connect 1200 string                       */
  461.       char        msgCon1275    [80];   /* Connect 1275 string                       */
  462.       char        msgCon2400    [80];   /* Connect 2400 string                       */
  463.       char        msgCon4800    [80];   /* Connect 4800 string                       */
  464.       char        msgCon7200    [80];   /* Connect 7200 string                       */
  465.       char        msgCon9600    [80];   /* Connect 9600 string                       */
  466.       char        msgCon12000   [80];   /* Connect 12000 string                      */
  467.       char        msgCon14400   [80];   /* Connect 14400 string                      */
  468.       char        msgCon16800   [80];   /* Connect 16800 string                      */
  469.       char        msgCon19200   [80];   /* Connect 19200 string                      */
  470.       char        msgCon21600   [80];   /* Connect 21600 string                      */
  471.       char        msgCon24000   [80];   /* Connect 24000 string                      */
  472.       char        msgCon26400   [80];   /* Connect 26400 string                      */
  473.       char        msgCon28800   [80];   /* Connect 28800 string                      */
  474.       char        msgCon38400   [80];   /* Connect 38400 string                      */
  475.       char        msgCon57600   [80];   /* Connect 57600 string                      */
  476.       char        msgCon64000   [80];   /* Connect 64000 string                      */
  477.       char        msgCon115200  [80];   /* Connect 115200 string                     */
  478.       char        msgConExternal[80];   /* External/Fax connect string               */
  479.       char        msgRing       [80];   /* Ring string                               */
  480.       char        msgOk         [80];   /* "OK" string                               */
  481.       char        cmdInit1      [80];   /* Init command string 1                     */
  482.       char        cmdInit2      [80];   /* Init command string 2                     */
  483.       char        cmdInit3      [80];   /* Init command string 3                     */
  484.       char        cmdAnswer     [80];   /* Answer commnad string                     */
  485.       char        cmdOffHook    [80];   /* Off Hook command string                   */
  486.       char        cmdDown       [80];   /* BBS Down command string                   */
  487.       char        cmdAttention  [80];   /* Attention command string (usually "AT|")  */
  488.       short       externalErrorLevel;   /* Errorlevel for external/fax connect       */
  489.       char        msgCon31200   [80];   /* Connect 31200 string                      */
  490.       char        msgCon33600   [80];   /* Connect 33600 string                      */
  491.       char        msgCon36000   [80];   /* Connect 36000 string                      */
  492.  
  493.       char        msgConUser1   [80];   /* User connect string #1                    */
  494.       long        userConBps1;          /* User connect bps #1                       */
  495.       char        msgConUser2   [80];   /* User connect string #2                    */
  496.       long        userConBps2;          /* User connect bps #2                       */
  497.       char        msgConUser3   [80];   /* User connect string #3                    */
  498.       long        userConBps3;          /* User connect bps #3                       */
  499.       char        msgConUser4   [80];   /* User connect string #4                    */
  500.       long        userConBps4;          /* User connect bps #4                       */
  501.       char        msgConUser5   [80];   /* User connect string #5                    */
  502.       long        userConBps5;          /* User connect bps #5                       */
  503.       char        msgConUser6   [80];   /* User connect string #6                    */
  504.       long        userConBps6;          /* User connect bps #6                       */
  505.  
  506.       byte        extra[920];
  507.    };
  508.  
  509. #define MODEM_LOCKED        (0x00000001L)
  510. #define MODEM_MANUAL_ANSWER (0x00000002L)
  511.  
  512.  
  513. /*
  514. ────────────────────────────────────────────────────────────────────────────
  515.  BINLOG.PB
  516. ────────────────────────────────────────────────────────────────────────────
  517. */
  518.  
  519. struct BINLOG_PB
  520.    {
  521.       Date        date;
  522.       Time        timeIn;
  523.       Time        timeOut;
  524.       char        name[36];
  525.       char        city[26];
  526.       char        country[26];
  527.       long        baud;
  528.       word        node;
  529.       long        kbDown;
  530.       long        kbUp;
  531.       word        yells;
  532.       word        level;
  533.       dword       uflags;
  534.       char        alias[36];
  535.       char        extra[45];
  536.   };
  537.  
  538.  
  539. /*
  540. ────────────────────────────────────────────────────────────────────────────
  541.  FILESIDX.PB
  542. ────────────────────────────────────────────────────────────────────────────
  543. */
  544.  
  545. struct FILESIDX_PB
  546.    {
  547.       char        filename[13];         /* Name of the file, with extension             */
  548.       word        area;                 /* File area number where file is located       */
  549.    };
  550.  
  551.  
  552.  
  553. /*
  554. ────────────────────────────────────────────────────────────────────────────
  555.  FGROUPS.PB / MGROUPS.PB
  556. ────────────────────────────────────────────────────────────────────────────
  557. */
  558.  
  559. struct GROUPS_PB
  560.    {
  561.       char        name[80];
  562.       word        level;
  563.       long        flags;
  564.       long        flagsNot;
  565.  
  566.       byte        extra[10];
  567.    };
  568.  
  569.  
  570. /*
  571. ────────────────────────────────────────────────────────────────────────────
  572.  PVTFILES.PB
  573. ────────────────────────────────────────────────────────────────────────────
  574. */
  575.  
  576. struct PVTFILES_PB
  577.    {
  578.       Date        date;
  579.       char        fname  [80];
  580.       char        to     [36];
  581.       char        from   [36];
  582.       char        desc   [80];
  583.  
  584.       dword       attr;
  585.  
  586.       byte        extra  [61];
  587.    };
  588.  
  589. #define PVTFILE_KEEP (0x00000001L)
  590.  
  591.  
  592. /*
  593. ────────────────────────────────────────────────────────────────────────────
  594.  *.PBM (ProBoard Menus)
  595. ────────────────────────────────────────────────────────────────────────────
  596. */
  597.  
  598.  
  599. #define MENU_RIP 1          /* menu header attribute */
  600.  
  601. struct MENU_HEADER
  602.    {
  603.       dword attr;   // bit 0 = RIP menu
  604.       char prompt[200];
  605.       byte color;
  606.       byte highlight;
  607.       char RIPname[9];
  608.       byte extra[100];
  609.    };
  610.  
  611.  
  612. #define MENU_SHOWREMOTE 1   /* menu item attribute */
  613. #define MENU_SHOWLOCAL  2   /* menu item attribute */
  614.  
  615. struct MENU_ITEM
  616.    {
  617.       dword attr;     // Show remote/local - reset RIP
  618.       char text[160];
  619.       char data[160];
  620.       byte color;
  621.       byte hotKey;
  622.       word function;
  623.       char password[16];
  624.  
  625.       AccessRecord access;
  626.  
  627.       byte extra[50];
  628.    };
  629.  
  630.  
  631. /*
  632. ────────────────────────────────────────────────────────────────────────────
  633.  *.PBL (ProBoard Language Files)
  634. ────────────────────────────────────────────────────────────────────────────
  635. */
  636.  
  637.  
  638. struct LANG_HEADER
  639.    {
  640.       char        name[41];         /* Name of the language */
  641.       bool        avail;            /* TRUE = Available     */
  642.       word        level;            /* Level needed         */
  643.       accessflags flags;            /* Flags needed         */
  644.       char        menuPath[61];     /* Path for menus       */
  645.       char        txtPath[61];      /* Path for text files  */
  646.       char        questPath[61];    /* Path for Q-A files   */
  647.       char        copyright[81];    /* Copyright notice     */
  648.       byte        attrib;           /* Attribute (not used) */
  649.  
  650.       byte        extra[500];
  651.    };
  652.  
  653. #define LANG_PROMPT  1
  654. #define LANG_NOCOLOR 2
  655.  
  656. struct LANG_PROMPT
  657.   {
  658.    word len;               /* Length of string (excl. terminating '\0') */
  659.    word numHotkeys;        /* # Hotkeys defined                         */
  660.    byte color;             /* Main color                                */
  661.    byte highlight;         /* Highlight color                           */
  662.    byte promptcolor;       /* Prompt color                              */
  663.    byte flags;             /* Prompt/NoColor                            */
  664.   };
  665.  
  666. /*
  667. Each prompt consists of a LANG_PROMPT header, followed by 'len' characters
  668. for the prompt (not including the terminating zero), followed by
  669. 'numHotkeys' characters for the hotkeys (if any).
  670.  
  671. So a language file has the following structure:
  672.  
  673.         LANG_HEADER
  674.         LANG_PROMPT 1
  675.         string 1
  676.         hotkeys 1
  677.         lANG_PROMPT 2
  678.         string 2
  679.         hotkeys 2
  680.         LANG_PROMPT 3
  681.         string 3
  682.         hotkeys 3
  683.         ....
  684. */
  685.